<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Language" content="en" />
    <title>s6-linux-init - tools for a Linux init system</title>
    <meta name="Description" content="s6-linux-init - tools for a Linux init system" />
    <meta name="Keywords" content="s6 linux init administration root laurent bercot ska skarnet" />
    <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
  </head>
<body>

<p>
<a href="//skarnet.org/software/">Software</a><br />
<a href="//skarnet.org/">skarnet.org</a>
</p>

<h1> s6-linux-init </h1>

<h2> What is it&nbsp;? </h2>

<p>
 s6-linux-init is a set of minimalistic tools used to create a
<a href="//skarnet.org/software/s6/">s6</a>-based init
system, including a <tt>/sbin/init</tt> binary, on a Linux kernel.
It is a part of the <em>s6 ecosystem</em>.
</p>

<p>
 The resulting architecture follows the Unix philosophy (one job &rarr;
one tool) as closely as possible, and is fully dedicated to the s6 way of
managing a system:
</p>

<ul>
 <li> <a href="//skarnet.org/software/s6/s6-svscan.html">s6-svscan</a>
runs as process 1 for the whole machine lifetime. </li>
 <li> Every daemon is supervised. </li>
 <li> No logs are ever lost. </li>
 <li> Policy is entirely left to the user. Typically, <em>any</em> service manager
can be run on top of s6-linux-init. </li>
</ul>

<p>
 Nevertheless, the architecture is fully compliant with various
empirical and historical specifications. For instance, it provides:
</p>

<ul>
 <li> utmp management compatible with sysvinit </li>
 <li> runlevel management, with a configurable default, overridable from the
kernel command line </li>
 <li> sysvinit-like commands to shut the system down, including a
<tt>shutdown</tt> command that follows the
<a href="https://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/shutdown.html">LSB specification</a> </li>
</ul>

<hr />

<ul>
 <li> <a href="why.html">Why</a> s6-linux-init&nbsp;? </li>
 <li> <a href="overview.html">An overview</a> of s6-linux-init </li>
 <li> <a href="quickstart.html">A quickstart guide</a> for the impatient, along with a FAQ </li>
</ul>

<hr />

<h2> Installation </h2>

<h3> Requirements </h3>

<ul>
 <li> A Linux-based system with a standard C development environment </li>
 <li> GNU make, version 3.81 or later </li>
 <li> <a href="//skarnet.org/software/skalibs/">skalibs</a> version
2.10.0.3 or later. It's a build-time requirement. It's also a run-time
requirement (for <a href="s6-linux-init-maker.html">s6-linux-init-maker</a>)
as well as a boot-time requirement (i.e. a run-time requirement for the
programs used when you boot a system created with
<a href="s6-linux-init-maker.html">s6-linux-init-maker</a>) if you link
against the shared version of the skalibs library. </li>
 <li> <a href="//skarnet.org/software/execline/">execline</a> version
2.8.0.1 or later. It is a build-time and boot-time requirement. </li>
 <li> <a href="//skarnet.org/software/s6/">s6</a> version
2.10.0.3 or later. It is a build-time and boot-time requirement. </li>
</ul>

<p>
 The following optional dependencies are also supported:
</p>

<ul>
 <li> If you're using <a href="https://www.musl-libc.org/">musl</a> and
want nsswitch-like functionality:
<a href="//skarnet.org/software/nsss/">nsss</a> version
0.1.0.1 or later (build-time and boot-time) </li>
 <li> If you want secure utmp functionality:
<a href="//skarnet.org/software/utmps/">utmps</a> version
0.1.0.2 or later (build-time and boot-time) </li>
</ul>

<p>
 All those dependencies are <em>build-time</em> and <em>run-time</em>,
except possibly skalibs, which is not needed at run time if you are linking
all the other packages against the <em>static</em> version of libskarnet.
</p>

<h3> Licensing </h3>

<p>
 s6-linux-init is free software. It is available under the
<a href="https://opensource.org/licenses/ISC">ISC license</a>.
</p>

<h3> Download </h3>

<ul>
 <li> The current released version of s6-linux-init is
<a href="s6-linux-init-1.0.6.3.tar.gz">1.0.6.3</a>. </li>
 <li> Alternatively, you can checkout a copy of the
<a href="//git.skarnet.org/cgi-bin/cgit.cgi/s6-linux-init/">s6-linux-init
git repository</a>:
<pre> git clone git://git.skarnet.org/s6-linux-init </pre> </li>
 <li> There's also a
<a href="https://github.com/skarnet/s6-linux-init">GitHub mirror</a>
of the s6-linux-init git repository. </li>
</ul>

<h3> Compilation </h3>

<ul>
 <li> See the enclosed INSTALL file for installation details. </li>
</ul>

<h3> Upgrade notes </h3>

<ul>
 <li> <a href="upgrade.html">This page</a> lists the differences to be aware of between
the previous versions of s6-linux-init and the current one. </li>
</ul>

<hr />

<h2> Reference </h2>

<h3> General </h3>

<ul>
 <li> A <a href="why.html">rationale</a> for this package </li>
 <li> An <a href="overview.html">overview</a> of s6-linux-init </li>
 <li> A <a href="quickstart.html">quickstart page</a> </li>
</ul>

<h3> Commands </h3>

<p>
 Unless more details are provided in an <em>Exit codes</em> section
of a specific page, all these commands exit 0 on success, 111 if they encounter a
temporary error (such as a system call failure) and 100 if they encounter a
permanent error (such as a misuse).
</p>

<ul>
<li><a href="s6-linux-init-maker.html">The <tt>s6-linux-init-maker</tt> program</a></li>
<li><a href="s6-linux-init.html">The <tt>s6-linux-init</tt> program</a></li>
<li><a href="s6-linux-init-hpr.html">The <tt>s6-linux-init-hpr</tt> program</a></li>
<li><a href="s6-linux-init-shutdown.html">The <tt>s6-linux-init-shutdown</tt> program</a></li>
<li><a href="s6-linux-init-shutdownd.html">The <tt>s6-linux-init-shutdownd</tt> program</a></li>
<li><a href="s6-linux-init-telinit.html">The <tt>s6-linux-init-telinit</tt> program</a></li>
<li><a href="s6-linux-init-logouthookd.html">The <tt>s6-linux-init-logouthookd</tt> program</a></li>
<li><a href="s6-linux-init-echo.html">The <tt>s6-linux-init-echo</tt> program</a></li>
<li><a href="s6-linux-init-nuke.html">The <tt>s6-linux-init-nuke</tt> program</a></li>
<li><a href="s6-linux-init-umountall.html">The <tt>s6-linux-init-umountall</tt> program</a></li>
</ul>

<h2> Related resources </h2>

<ul>
 <li> <tt>s6-linux-init</tt> is discussed on the
<a href="//skarnet.org/lists.html#skaware">skaware</a> and
<a href="//skarnet.org/lists.html#supervision">supervision</a>
mailing-lists. </li>
 <li> There is a <tt>#s6</tt> IRC channel on Freenode. Sometimes people
are there and even answer questions. </li>
</ul>

</body>
</html>
